package org.villacoapa.censo.web.xml.parser;

import java.io.StringWriter;
import java.util.ArrayList;

import org.apache.commons.betwixt.io.BeanWriter;
import org.apache.log4j.Logger;
import org.villacoapa.censo.dao.Estado;

public class BeanToXml {
	
	private static Logger log = Logger.getLogger(BeanToXml.class);
	
	public static String parseSimpleBean(String qualifiedName, Object bean){
		try {
			//Lo vamos a enviar a un String
			StringWriter outputWriter = new StringWriter();
			
			//Para que haga el xml bien formado
			//porque betwixt solo regresa la info del bean
			outputWriter.write("<?xml version='1.0' ?>");
				
			// Creamos el beanwriter el cual escribira a nuestro bean preparado
			BeanWriter writer = new BeanWriter(outputWriter);
			
			//Configuramos el beanwriter
	        writer.getXMLIntrospector().setAttributesForPrimitives(false);
	        writer.enablePrettyPrint();
	        //writer.getBindingConfiguration().setMapIDs(false);
	        writer.setWriteIDs(true);
	        
	        // Seteamos un mapper personalizado para los atributos
	        //writer.getXMLIntrospector().setAttributeNameMapper(new HyphenatedNameMapper());
	        // Seteamos un mapper personalizado para los elementos
	        //writer.getXMLIntrospector().setElementNameMapper(new DecapitalizeNameMapper());
	        
	        writer.write(qualifiedName, bean);
	        
	        String result = outputWriter.toString();
	        outputWriter.close();
	        return result;
	        
		} catch (Exception e) {
			log.error("Imposible parsear objeto a xml:"+e.fillInStackTrace());
			throw new RuntimeException("Error al tratar de parsear el bean a XML:"+bean.getClass());
		}
		
	}
	
	public static void main(String[] args) {
		BeanToXml xml = new BeanToXml();
		Estado estado = new Estado();
		estado.setEstado("D.F.");
		estado.setIdEstado(13);
		
		
		ArrayList<Estado> arEstados = new ArrayList<Estado>();
        Estado est = new Estado();
        est.setEstado("D.F.");
        est.setIdEstado(31);
        arEstados.add(est);
        est = new Estado();
        est.setEstado("Mich");
        est.setIdEstado(27);
        arEstados.add(est);
		
		log.info(xml.parseSimpleBean("Estados",arEstados));
		
	}

}
